#define  _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;

class SubSystemA
{
public:
	void operationA1()
	{
		cout << "operationA1" << endl;
	}
	void operationA2()
	{
		cout << "operationA2" << endl;
	}
};

class SubSystemB
{
public:
	void operationB1()
	{
		cout << "operationB1" << endl;
	}
	void operationB2()
	{
		cout << "operationB2" << endl;
	}
};

class SubSystemC
{
public:
	void operationC1()
	{
		cout << "operationC1" << endl;
	}
	void operationC2()
	{
		cout << "operationC2" << endl;
	}
};

class Facade
{
public:
	void operation1()
	{
		sa->operationA1();
		sb->operationB1();
		sc->operationC1();
	}

	void operation2()
	{
		sa->operationA2();
		sb->operationB2();
		sc->operationC2();
	}
private:
	SubSystemA* sa;
	SubSystemB* sb;
	SubSystemC* sc;
};

int main()
{
	Facade* facade = new Facade;
	facade->operation1();
	facade->operation2();

	return 0;
}